// 1.匹配16进制颜色
// #ffbbad

// #Fc01DF

// #FFF

// #ffE
// 分析 可以使用字符组[0-9a-zA-z] 字符出现 3或6次 用量词 和分支结构 
// 使用分支结构是要注意顺序
var regex=/#([0-9a-zA-z]{6}|[0-9a-zA-z]{3})/g;
var string = "#ffbbad #Fc01DF #FFF #ffE";
console.log( string.match(regex) );

// 2.匹配时间 24小时为例
// 23:59
// 分析 4位数字 第二位数字受第一位影响 有两种情况 可用分支结构
var regex =/^([01][0-9]|[2][0-3]):[0-5][0-9]$/; 
console.log( regex.test("23:59") ); 
console.log( regex.test("02:07") ); 

// 如果要求匹配2:7  即0可以省略
var regex=/^(0?[0-9]|1[0-9]|2[0-3]):(0?[0-9]|[1-5][0-9])$/
console.log( regex.test("23:59") ); 
console.log( regex.test("02:07") );
console.log( regex.test("2:7") );

// 3.匹配日期 如yyyy-mm-dd
// 2022-05-05
// 分析 
// yyyy 用[0-9]{4}
// mm 0[1-9]|1[0-2]
// dd 0[1-9]|1[0-9]|2[0-9]|3[0-1] ->0[1-9]|[12][0-9]|3[0-1]
var regex=/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[0-1])$/;
console.log(regex.test("2022-05-05"));

// 4.window操作系统的文件
// 要求匹配
// F:\study\javascript\regex\regular expression.pdf

// F:\study\javascript\regex\

// F:\study\javascript

// F:\

// 分析
// F:\ 可以使用[a-zA-Z]:\\ 其中 \需要转义
// 文件名(文件夹名) 不能包含一些特殊字符 要排除 使用  [^\\:*<>|"?\r\n/] 
// 且文件夹名不能为空 至少有一个字符 使用+ 那么 [^\\:*<>|"?\r\n/]+
// 还有 文件夹\ 再加上\ 那么[^\\:*<>|"?\r\n/]+\\
// 而文件夹可以出现任意次 那么 ([^\\:*<>|"?\r\n/]+\\)* 括号内表示子表达式
// 而最后的文件夹可以没有 \ 因此需要添加 ([^\\:*<>|"?\r\n/]+)?

var regex=/^[a-zA-Z]:\\([^\\:*<>|"?\r\n/]+\\)*([^\\:*<>|"?\r\n/]+)?$/;
console.log( regex.test("F:\\study\\javascript\\regex\\regular expression.pdf") ); 
console.log( regex.test("F:\\study\\javascript\\regex\\") ); 
console.log( regex.test("F:\\study\\javascript") ); 
console.log( regex.test("F:\\") );

// 5.匹配id
var regex1=/id=".*"/ //贪婪匹配
var regex2=/id=".*?"/ //惰性匹配
var string = '<div id="container" class="main"></div>';
console.log(string.match(regex1)[0]);
console.log(string.match(regex2)[0]);